\chapter{Base de Datos}

\section{Introducción}
Otro de los componentes externos al sistema es la base de datos de antirretrovirales que son necesarios para la generación de las terapias. Se tomo la base de datos de forma independiente con lo cual esta puede ser manipulada o reemplazada sin acceder al código del software y que da libertad al usuario de poder configurarla con la información necesaria (OCP). Inicialmente y a modo de ejemplo utilizaremos una base de datos genérica con los 18 antirretrovirales provistos por el I.A.S. ($www.iasociety.org$) \cite{JBB08} que se compone de los antirretrovirales utilizados en la actualidad y que se listan en la sección $2.3$.

\section{Base de datos genérica}
La base de datos que incluimos en este sistema provee información básica de los antirretrovirales a utilizar como su nombre oficial, un id para indexación y un listado de posiciones de resistencia (ver capítulo 6). El formato elegido para su representación es XML.
También anexamos a la información la clase y el tipo de antirretroviral, donde la clase puede ser:
\begin{itemize}
\item Protease Inhibitor (PI).
\item Nucleoside and Nucleotide Analogue Reverse Transcriptase Inhibitors (NRTI).
\item Nonnucleoside Analogue Reverse Transcriptase Inhibitors (NNRTI).
\end{itemize}	

A su vez, como mencionamos anteriormente las dos ultimas clases se clasifican dentro del mismo tipo de antirretroviral, los Inhibidores de Transcriptasa reversa, con lo cual definimos también ese tipo, pudiendo ser:	
\begin{itemize}
\item Protease Inhibitor.
\item Analogue Reverse Transcriptase Inhibitors.
\end{itemize}

\subsection{Ejemplo de un registro en la base de datos}
Como ejemplo mostramos la forma en que se denota un antirretroviral en la base de datos:

\begin{lstlisting}[language=XML,basicstyle=\tt, frame=trBL]
<antiviral id="Abacabir"  num = "0" type = "tRT" class = "cNRTI">
  <resistance pos="65" aminos="R"/>
  <resistance pos="74" aminos="V"/>
  <resistance pos="115" aminos="F"/>
  <resistance pos="184" aminos="V"/>
</antiviral>
\end{lstlisting}

\section{Agregar información a la base de datos}
La información incluida en la base de datos es la mínima indispensable para poder hacer los cálculos requeridos por el sistema, como ser la aplicación de un antirretroviral a una secuencia. Con lo cual, las posiciones de resistencia son los datos principales para poder ejecutarse en caso de que elijamos plantear aplicaciones por resistencias. ¿ Pero,qué sucede si queremos considerar otras variables como atributos extra que posea el antirretroviral, por ejemplo, su toxicidad, costo, entre otras, y que son cruciales para la elaboración de una terapia?. Permitiremos anexar esta información a la base de datos (addendum) y desde el plugin especificar que esa variable sea tenida en cuenta para la confección de la terapia. 

\subsection{Addendum}
Se definió con este nombre a la extensión de los datos de un antirretroviral en la base de datos.
De forma muy simple se puede colocar un nuevo conjunto de atributos con su valor. Para eso se agrego la siguiente linea luego de la especificación de las resistencias:

\begin{lstlisting}[language=XML,basicstyle=\tt, frame=trBL]
...
<addendum attrib="price" value="34"/>
<addendum attrib="toxicity" value="0.34"/>
<addendum attrib="pregnancy" value="1"/>
...
\end{lstlisting}

Para garantizar la completitud y correctitud de los datos se debe corroborar que las nuevas variables estén presentes en cada una de las definiciones de los antirretrovirales y que estas sean correctas, por ejemplo, que el valor de un aminoácido sea realmente un aminoácido. La razón es que el sistema no pre-procesa la base de datos en búsqueda de inconsistencias, para eso podemos estableces un criterio de los datos y que se puede definir en el plugin. Es decir, que los datos sean correctos dependerá del contexto del cálculo que se desee realizar.

\section{FXP}
Para el parseo del archivo XML se utilizó FXP (Fudepan XML Parser), esta librería está pensada para trasladar información de un árbol XML a una estructura específica del sistema, en nuestro caso, la representación del antirretroviral.




